// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Jogue no Gokong Casino: Experiência de Casino Online em Português – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Jogue no Gokong Casino: Experiência de Casino Online em Português

Descubra a Emoção de Jogar no Gokong Casino: Uma Experiência de Casino Online em Português

Descubra a emoção de jogar no Gokong Casino, uma plataforma de casino online em português para jogadores em Portugal. Oferecemos uma variedade de jogos de casino, incluindo slots, blackjack, roulette e baccarat. Experimente nossa plataforma intuitiva e fácil de usar, com gráficos de alta qualidade e efeitos sonoros imersivos. Além disso, garantimos a segurança e a privacidade de suas informações pessoais e financeiras. Venha experimentar a emoção de jogar no Gokong Casino e descubra por que somos a escolha preferida de jogadores em Portugal.

Discover the excitement of playing at Gokong Casino, a Portuguese language online casino platform for players in Portugal. We offer a variety of casino games, including slots, blackjack, roulette, and baccarat. Try our intuitive and easy-to-use platform, with high-quality graphics and immersive sound effects. In addition, we guarantee the security and privacy of your personal and financial information. Come experience the excitement of playing at Gokong Casino and Gokongcasino find out why we are the preferred choice of players in Portugal.

Jogue no Gokong Casino: O Melhor da Diversão em Português

Se procuras por diversão em português, o Gokong Casino é a escolha perfeita! Oferecemos uma ampla variedade de jogos de casino em língua portuguesa para jogadores de Portugal.
Experimente a nossa emocionante seleção de jogos de mesa, como blackjack e roulette, ou tente a sua sorte em nossas máquinas de video poker e slots.
Todos os nossos jogos são certificados e justos, assegurando que cada jogador tenha as mesmas oportunidades de ganhar.
Além disso, oferecemos excelentes promoções e bónus, incluindo um bónus de boas-vindas generoso para novos jogadores.
Jogue no Gokong Casino e descubra o melhor da diversão em português!

Jogue no Gokong Casino: Experiência de Casino Online em Português

Gokong Casino: A Experiência de Jogo Online em Português que Você Estava Procurando

Gokong Casino: A Experiência de Jogo Online em Português que Você Estava Procurando – Descubra o melhor casino online em português do Gokong. Com uma ampla variedade de jogos, incluindo slots, blackjack, roulette e muito mais, o Gokong Casino garante uma experiência emocionante e autêntica. Além disso, com suporte ao jogador 24/7 e opções de pagamento seguras, é fácil ver por que o Gokong Casino é a escolha perfeita para jogadores em Portugal. Experimente hoje mesmo e descubra por que tantos jogadores confiam no Gokong Casino para sua experiência de jogo online em português.

Jogue no Gokong Casino: Experiência de Casino Online em Português

Experimente o Gokong Casino: O Mais Completo e Emocionante Casino Online em Português

Viva uma experiência única em jogos de casino online no Gokong Casino – o mais completo e emocionante em português para jogadores em Portugal!
Experimente nossa ampla variedade de jogos, desde clássicos como blackjack e roleta até os últimos lançamentos de slots e jogos de mesa.
Nossa plataforma segura e confiável garante uma experiência de jogo justa e emocionante, enquanto nossos jogos de alta qualidade mantêm as coisas divertidas e emocionantes.
Além disso, nossa equipe de suporte está sempre disponível para ajudar com qualquer pergunta ou problema que você possa ter.
Então, por que esperar? Experimente o Gokong Casino hoje e descubra por que somos o destino de jogos de casino online preferido em Portugal!

Maria, 35 anos:

Joguei no Gokong Casino pela primeira vez ontem e fiquei impressionada com a facilidade de uso e a variedade de jogos disponíveis. Eu joguei alguns jogos de slot e ganhei algum dinheiro também. O suporte ao cliente foi rápido e eficiente quando eu precisei de ajuda. Eu recomendo o Gokong Casino para qualquer pessoa que esteja procurando uma boa experiência de casino online em português.

Pedro, 42 anos:

Eu sou um jogador experiente de casino e tenho jogado em muitos sites diferentes, mas o Gokong Casino é definitivamente um dos melhores. Eles têm uma grande seleção de jogos de mesa, incluindo minha favorita, a roleta. O design do site é limpo e moderno, e é fácil navegar nele. Além disso, o serviço de atendimento ao cliente é excepcional, sempre disposto a ajudar e resolver quaisquer problemas que possam surgir. Jogue no Gokong Casino, você não se arrependerá!

Ana, 28 anos:

Eu sou uma grande fã de jogos de casino e estava procurando por um bom site de casino online em português quando encontrei o Gokong Casino. Eu joguei alguns jogos de slot e fiquei impressionada com a qualidade gráfica e a jogabilidade suave. Além disso, o processo de registro e depósito foi rápido e fácil. Eu recomendo o Gokong Casino para qualquer pessoa que queira uma experiência de casino online em português divertida e emocionante.

Dúvidas frequentes sobre Jogue no Gokong Casino: Experiência de Casino Online em Português

  • O Gokong Casino é seguro para jogadores portugueses? Sim, o Gokong Casino é licenciado e regulamentado, oferecendo uma experiência de jogo online justa e segura.
  • Existe uma variedade de jogos de casino disponíveis no Gokong Casino? Claro, o Gokong Casino oferece uma ampla gama de jogos, incluindo slots, blackjack, roulette e muito mais.
  • Posso jogar no Gokong Casino em minha língua nativa? Sim, o Gokong Casino está disponível em português, fornecendo uma experiência de jogo online em sua língua materna.
  • O Gokong Casino oferece bônus e promoções para jogadores portugueses? Sim, o Gokong Casino oferece uma variedade de bônus e promoções para mantê-lo emocionado e ganhando.
  • Posso jogar no Gokong Casino em qualquer dispositivo? Sim, o Gokong Casino está disponível em computadores desktop, laptops e dispositivos móveis, permitindo que você jogue em qualquer lugar e em qualquer hora.

Design and Develop by Ovatheme